package com.ld.controller;

import cn.hutool.core.io.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring5.SpringTemplateEngine;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author: Liudao
 * @Date: 2022-08-24-15:05
 * @Description:
 */
@Controller
@RequestMapping
public class IndexController {

    @Autowired
    private SpringTemplateEngine templateEngine;
    //欢迎页面
    @RequestMapping("/index")
    public String index(Model model){
    //定义集合
        List<String> heros = new ArrayList<>();
    //添加数据
        heros.add("裴擒虎");
        heros.add("韩信");
        heros.add("司空震");
        heros.add("百里守约");
        heros.add("干将莫邪");
        heros.add("典韦");
    //放入model
        model.addAttribute("heros",heros);
    //返回逻辑视图
        return "index";
    }

    //动态渲染
    @GetMapping("render")
    @ResponseBody
    public void render(){
        //1 定义上下文环境
        Context context = new Context();
        List<String> heros = new ArrayList<>();
        heros.add("裴擒虎");
        heros.add("韩信");
        heros.add("司空震");
        heros.add("百里守约");
        heros.add("干将莫邪");
        heros.add("典韦");
        //2 将数据添加到上下文环境中
        context.setVariable("heros",heros);

        //参数1：逻辑视图的名字，返回生成的带有model和视图的完整页面数据
        //参数2：代表上下文对象，模型数据存放在其中
        //3 执行模板
        String process = templateEngine.process("index", context);
        //4 将生成的内容写入指定的文件中
        FileUtil.writeUtf8String(process,new File("d:/ldAutofiles/render.html"));
    }
}
